package servico.enums;

/**
 * Classe enum para controle de tipos de usu�rio.
 * 
 * @author Maciel Melo
 * @since 09/11/2013 macielmelo.eti.br
 */
public enum TipoPermissao {

	/**
	 * Administrador do sistema. Este tipo de usu�rio ter� todas as permis�es do
	 * sistema.</br> - Gerenciamento de Usu�rios</br> - Gerenciamento de
	 * Atendimentos e Consultas</br> - Gerenciamento de Pacientes</br> -
	 * Gerenciamento de Atendentes</br> - Exibi��o de relat�rios
	 */
	ADMIN(1, "Administrador"),
	/**
	 * Permiss�o Para:</br> - Gerenciamento de Atendimentos e Consultas</br> -
	 * Gerenciamento de Pacientes</br> - Gerenciamento de Atendentes</br> -
	 * Exibi��o de relat�rios
	 */
	OPERADOR(2, "Operador"),
	/**
	 * Permiss�o para:</br> - Gerenciamento de Pacientes</br> - Exibi��o de
	 * relat�rios</br>
	 */
	ATENDENTE(3, "Atendente");

	private Integer codigo;
	private String descricao;

	private TipoPermissao(Integer codigo, String descricao) {
		this.codigo = codigo;
		this.descricao = descricao;
	}

	/**
	 * Recupera um enum TipoPermissao a partir do codigo cadastrado
	 * 
	 * @param codigo
	 *            codigo relativo ao tipo de permiss�o
	 * @return tipo de permiss�o espec�fica referente ao c�digo</br> se o c�digo
	 *         n�o existir, o c�digo retornarar um null.
	 */
	public static TipoPermissao getTipoPermissao(Integer codigo) {

		for (TipoPermissao tipoPermissao : values()) {
			if (tipoPermissao.getCodigo().equals(codigo)) {
				return tipoPermissao;
			}
		}

		return null;
	}

	/**
	 * Gets the codigo.
	 * 
	 * @return the codigo
	 */
	public Integer getCodigo() {
		return codigo;
	}

	/**
	 * Gets the descricao.
	 * 
	 * @return the descricao
	 */
	public String getDescricao() {
		return descricao;
	}

}
